package org.ws.task.schedule;

import org.ws.task.model.TaskItem;

/**
 * 获取任务调度器
 * 从应用通过PullItemProvider或PushItemProvider获取任务并执行分发
 * @param <T>
 */
public interface ItemSchedule<T> {

    /**
     * 异步
     * @param callback
     */
    void schedule(String taskName,String nodeId,int size,
                  ScheduleCallback<TaskItem<T>> callback);

    /**
     * 主动停止
     */
    void shutdown(String taskName,String nodeId);

    /**
     * 运行状态
     * @return
     */
    boolean isContinue(String taskName,String nodeId);

    void ready(String taskName,String nodeId);
}
